package ScalaStudy.chapter06

object test18_Apply {
  def main(args: Array[String]): Unit = {


    /////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////   工厂方法--apply /////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////

    println("===============  apply方法可以不用关键字new创建对象  ===========")

    println("=====  无参选择无参的apply  =====")
    val person1 = Person18()
    println(person1.name)

    println("=====  有参选择有参的apply  =====")
    val person2 = Person18("wq")
    println(person2.name)

  }
}

class Person18 private(toName: String){
  val name: String = toName
}

object Person18{

  def apply(): Person18 = {
    println("apply空参数被调用")
    new Person18("")
  }

  def apply(name: String): Person18 = {
    println("apply有参数被调用")
    new Person18(name)
  }

}
